package com.zhangxu.microservice.auth.mapstruct;

import com.zhangxu.microservice.auth.biz.dto.CreateRoleDTO;
import com.zhangxu.microservice.auth.biz.dto.RoleDTO;
import com.zhangxu.microservice.auth.biz.dto.UpdateRoleDTO;
import com.zhangxu.microservice.auth.vo.req.CreateRoleReq;
import com.zhangxu.microservice.auth.vo.req.UpdateRoleReq;
import com.zhangxu.microservice.auth.vo.resp.RoleResp;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

/**
 * 角色Web层对象转换接口
 */
@Mapper(componentModel = "spring")
public interface RoleWebConverter {

    /**
     * CreateRoleReq 转 CreateRoleDTO
     *
     * @param createRoleReq 创建角色请求
     * @return 创建角色DTO
     */
    CreateRoleDTO toCreateRoleDTO(CreateRoleReq createRoleReq);

    /**
     * UpdateRoleReq 转 UpdateRoleDTO
     *
     * @param updateRoleReq 更新角色请求
     * @return 更新角色DTO
     */
    @Mapping(target = "id", ignore = true)
    UpdateRoleDTO toUpdateRoleDTO(UpdateRoleReq updateRoleReq);

    /**
     * RoleDTO 转 RoleResp
     *
     * @param roleDTO 角色DTO
     * @return 角色响应
     */
    RoleResp toRoleResp(RoleDTO roleDTO);
}